package com.lonely.fx;

import javafx.application.Application;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.TextField;
import javafx.scene.control.Tooltip;
import javafx.scene.text.Font;
import javafx.stage.Stage;

/**
 * @author 独孤小标
 * @description 单行文本框设置
 * @since 2022/6/27 9:43 下午
 */
public class TextFieldSettingMain extends Application {

    public static void main(String[] args) {
        launch(args);
    }

    /**
     *
     */
    @Override
    public void start(Stage primaryStage) throws Exception {

        // 创建文本框
        TextField textField = new TextField();

        //设置文本框内容值
        //textField.setText("欢迎你");

        //设置宽高
        //textField.setPrefWidth(300);
        //textField.setPrefHeight(100);

        //设置出现的位置
        textField.setLayoutX(100);
        textField.setLayoutY(50);

        //设置字体大小
        textField.setFont(Font.font(20));

        //设置鼠标悬浮提示语
        textField.setTooltip(new Tooltip("这是一个文本框"));

        //设置当未输入文本的时候的灰色背景文本,如果设置了 setText() 在无效，如果已经光标锁定了，也无效
        //注意：因为这里只有一个文本框，默认显示的时候会注入光标，则 promptText属性无效，因此，为了测试，这里将光标先不锁定改文本框
        textField.setFocusTraversable(false);
        textField.setPromptText("请输入文本~~~");


        //场景：限制文本框的文本最大长度为6？
        //文本变化事件
        textField.textProperty().addListener((observable, oldValue, newValue) -> {
            if (newValue.length() > 6) {
                textField.setText(oldValue);
            }
        });

        //文本选择事件
        textField.selectedTextProperty().addListener((observable, oldValue, newValue) -> {
            System.out.println("选择了文本：" + newValue);
        });


        Group group = new Group();
        group.getChildren().add(textField);

        Scene scene = new Scene(group);
        primaryStage.setScene(scene);
        primaryStage.setWidth(500);
        primaryStage.setHeight(400);
        primaryStage.show();


    }
}
